The present disclosure relates to enabling use of compression capabilities of a storage device.
Classical data access interfaces involve reading and writing operations that operate on a user view of data or form of data used by applications. Some classical interfaces allow data to be reduced in a storage device view of data with respect to the user view of the data. However, existing classical read and write interfaces prescribed by various standard protocols provide applications with a view that is unaware of the presence of compression, so that transfers between storage devices and applications can only transfer uncompressed data.
Data reduction using compression in a storage device provides many benefits, such as increased storage capacity, increased performance, and increased endurance in the case of a limited endurance storage medium. However, standard block read and write interfaces prescribed by various standard protocols, such as SCSI (Small Computer System Interface) or NVM Express (Non-Volatile Memory Host Controller Interface Specification), provide applications with a view that is unaware of the presence of compression. When the data is not reduced, the application's view of the data is the same as the storage device's view of the data, however, when the data is reduced the application's view is different than the storage device's view.
Classical technology may provide validity check or protection information (e.g., using T10 DIF) on uncompressed data to verify the integrity of the uncompressed data; however, the validity check information computed on uncompressed data is not useful to verify the integrity of the compressed form of the data. For example, even if validity check information is computed for uncompressed data and the data is later compressed, the data must be decompressed before the validity can be checked using the validity check information for the uncompressed data.
There are applications which do not need to process the data itself but could still benefit from exchanging compressed data with a storage device. However, existing solutions are generally unable to efficiently use data in its compressed form. The present disclosure solves problems impeding such use of compressed data by enabling new interfaces for communication between a storage device and an application.